The present invention generally relates to storage control in a nonvolatile memory module.
A nonvolatile memory module (hereinafter called an FM module) equipped with a NAND-type flash memory (hereinafter called FM) such as a solid-state drive (hereinafter called SSD) is known as one example of a nonvolatile memory (NVM) module provided with a nonvolatile memory (NVM) (typically a nonvolatile semiconductor memory). The FM module can write and read data at higher speed than a hard disk drive (HDD) which has been used for a medium for long-term storage of an enterprise system. The FM module for enhancing performance of a system is being widely utilized in place of HDD or for another application. Such extension of utilization of the FM module is enabled by reduction of a bit cost of the FM by micronization and multi-valuing.
The FM is configured by cells for storing electrons and a value is recorded by relating the number of electrons injected into the cell and a bit count of data. When the number of the electrons increases or decreases as time goes, the related bit count varies. As a result, an error bit is caused. Recently, as a bit count varies even due to slight electron transfer because of micronization and multi-valuing, error bits of the FM are apt to increase. In addition, a margin (difference between threshold voltage and read voltage) for absorbing difference in reliability of a storage area decreases and difference in reliability (difference in an error bit occurrence count) every storage area comes to remarkably emerge.
Then, an FM controller (a controller for the FM module) realizes precise data holding by generating an error correction code (ECC) codeword (ECCCW) acquired by applying ECC for correcting an error bit to record data when data is recorded in the FM and correcting an error bit caused in the ECCCW using the ECC in reading. Such technique is disclosed in United States Patent No. 2012/0254686.
In this specification, a minimum recording unit of the FM is hereinafter called a page and a minimum erasing unit is hereinafter called a block.